#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>

// 定义模块加载函数
static int __init printk_module_init(void)
{
    printk(KERN_INFO "====printk模块加载成功！====\n");
    printk(KERN_DEBUG "这是一个DEBUG级别的信息\n");
    printk(KERN_INFO "这是一个INFO级别的信息\n");
    printk(KERN_WARNING "这是一个WARNING级别的信息\n");
    printk(KERN_ERR "这是一个ERROR级别的信息\n");
    printk(KERN_CRIT "这是一个CRITICAL级别的信息\n");
    printk(KERN_ALERT "这是一个ALERT级别的信息\n");
    printk(KERN_EMERG "这是一个EMERGENCY级别的信息\n");

    // 使用KERN_CONT继续上一条日志消息
    printk(KERN_INFO "这是一条需要继续的信息...");
    printk(KERN_CONT "...这是继续的部分\n");

    // 使用KERN_DEFAULT设置默认日志级别
    printk(KERN_DEFAULT "这是默认日志级别的信息\n");

    return 0; // 返回0表示模块加载成功
}

// 定义模块卸载函数
static void __exit printk_module_exit(void)
{
    printk(KERN_INFO "====printk模块卸载成功！====\n");
}

// 注册模块加载和卸载函数
module_init(printk_module_init);
module_exit(printk_module_exit);

// 模块信息
MODULE_LICENSE("GPL");
MODULE_AUTHOR("your_name");
MODULE_DESCRIPTION("一个简单的printk内核模块示例");
MODULE_VERSION("0.1");
